// Enesea Device
// (c) jimon game studio

#ifndef JEH_IDEVICE
#define JEH_IDEVICE

#include "Config_Engine.h"
#include "jeUnknown.h"
#include "IWindow.h"

namespace je
{
	namespace device
	{
		enum DeviceType
		{
			//! Choose any aviable device
			DT_ANY_AVIABLE,

			//! System device
			DT_SYSTEM
		};

		//! Enesea Device
		class IDevice:public je::jeUnknown
		{
		public:
			//! Destructor
			virtual ~IDevice()
			{
			}

			//! Create Window
			virtual IWindow * CreateWindow(const jeVector2di & Size,const jeStringd & Title = NULL,u1 FullScreen = false,s32 Depth = 0,s32 Hertz = 0,s32 MSAA = 0,const void * PlatformIconId = NULL) = 0;

			//! Delete Window
			virtual void DeleteWindow(IWindow * Window) = 0;

			//! Device Poll
			virtual void DevicePoll() = 0;
		};

		//! Create Enesea Device
		JE_ENGINE_FUNCTION_API IDevice * JE_ENGINE_FUNCTION_CALL CreateDevice(DeviceType Type = DT_ANY_AVIABLE);
	}
}

#endif
